| nettime's_roving_reporter on 10 Jul 2000 00:09:40 -0000 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| <nettime> The Cathedral and the Bizarre |
<http://www.macopinion.com/columns/macskeptic/00/07/07/index.html>
The Cathedral and the Bizarre
07 July 2000
by Jeff Lewis
Contributing Columnist
The OpenSource movement is one of those things I both love and hate. I
love the concept - it harkens back to the 70s and how I got into
computing. It was a time when almost no one actually owned a computer;
we shared access to systems which ran Unix and MTS and other esoteric
OSes, or we borrowed time on PDP-8s, and PDP-11s when the University
would let us have it. We didn't compete about brand of computer - who
could afford our own computer? - we engaged in friendly competition
trying to improve each other's code.
That all changed in the late 70's when a young programmer actually had
the audacity to sell his BASIC interpreter to the other programmers
rather than just giving it and the source code for it away. He went
away and sold it to Altair and Apple and well... the rest, as they
say, is history. With the IBM-PC making microcomputing respectable in
1981 (running an OS owned by, although not written by, that same young
programmer), the die was cast and computing was changed in a
fundamental way. Creating software, even for recreational purposes,
was tied to making money - and nothing kills the notion of community
faster than putting a price on it.
Some people, like Richard Stallman, have always tried to keep a bit of
this spirit alive - admittedly, it must be like fighting uphill in an
avalanche. But it wasn't until Linux that the OpenSource movement
really kicked in. Sure, there were lots of other OpenSource projects
before Linux - BSD, GNU, and while Linux relies on GNU for a lot of
its tools, the truth is that none of these projects ever managed to
capture the heart of people like Linux.
Which leads me to the 'hate' part. There's a growing fanaticism within
the OpenSource community which is starting to smell almost as bad as
the fanaticism it tries to combat.
Bruno! Never kill a customer!
Eric Raymond's comments at MacHack were wonderfully telling in several
ways. He criticised Mac programmers for being too focussed on user
interface and criticised MacOS for intertwining the UI with system
functionality, making it harder for new programmers to get on board
writing MacOS apps.
Interestingly, the number one problems with Linux, from a consumer
perspective, are that it doesn't have a standardised UI; its tools are
simply too difficult to use and configure, and it requires far too
much upfront learning to get up to speed. The last is the most
telling: the Linux model moves the cost of learning from the developer
to the user.
As for upfront developer time, well, that's true - it is harder to
learn MacOS than it is to learn, say, the ANSI C libraries... but in
truth, Raymond overstates the issue. In fact, MacOS can be divided in
several large chunks. I regularly write 'console' apps in MacOS to do
little tasks which don't warrant a lot of UI. I also have several
shells for drag and drop functionality which handles all that sort of
stuff. In fact, I tend to stick to the ANSI C libraries. There are
some deficits in MacOS, relative to the 'standard' libraries - MacOS
has overwhelmingly complex networking support compared to sockets and
streams, but it also offers more complex functionality.
Ironically, it's the focus on UI, perhaps taken to obsession, which
gives MacOS its edge over... well, it has to be said this way - over
all other OSes. Windows comes close, but misses simply because Windows
developers really do not have that obsession to make the UI perfect.
Linux and the various X-Window interfaces rarely even come close. The
obsession with sticking to a standard behaviour means that MacOS users
experience a consistency of behaviour that no other OS can offer
(although again, Windows is getting closer - Linux is not even close).
Why the obsession? Simple. The customer is the reason for the
software. The customer must never be punished for choosing your
software. That means that the UI experience must be compelling. It has
to be refined. It should, as much as possible, anticipate without
being annoying (which is where Windows applications - especially
Microsoft's - fall down... They're just a little too eager to
anticipate and help). The customer isn't likely to be using just your
software, which means you have to play nice with the other software.
You can't strongarm the customer by only supporting a proprietary
format. You can't have a wildly different UI and behaviour because
you'll throw the user off.
At least Raymond does admit that the OpenSource community can learn
something about UI from Mac programmers... I hope they can also learn
something about real world customers.
Herding Cats
Sure, it's getting better, but let's put this in perspective: Linux
has been around for five or six years. The IBM-PC was created in 1981.
The Lisa was released in 1983. The Mac in 1984. By 1985, Microsoft,
Digital Research, Commodore-Amiga and Atari (by way of DRI) all had
GUI based computers, or GUI based interfaces for their computers, and
had established guidelines for UI. Admittedly, Microsoft's was
particularly bad (trust me, Windows 1.0 was stunningly horrible), but
then Microsoft - even though their own developers hated it - managed
to evolve and improve it. In five years, we went from no computer
having a UI to all computers used by the general public having a GUI
based OS - and three of four being pretty decent ones at at that.
Linux, on the other hand, pops up around 1995 after the GUI market had
twelve years of development - and promptly reinvents the wheel and
badly at that. (In defense of Linus Torvalds, he wasn't trying to
build a consumer OS, he was trying to create a freely available
Unix-like kernel in the spirit of Andrew Tannenbaum's Minix, which had
been the hot mini-OS on Atari and Amiga computers...)
The core 'advantage' Raymond puts forward, many programmers improving
the code, many eyes looking for bugs, is also its chief weakness.
Programmers - at least the kind who are likely to get involved in
OpenSource project - are a notoriously independent lot. They love to
do their own thing and always think they have a better way to do
things.
Normally, this is an advantage because, with filtering and discipline,
this is from whence the fountain of creativity which drives this
industry comes. Unchecked and unfiltered, though, and you have
unbridled chaos. As a result, you have no less than six different
desktop systems and two different configuration systems and tools
whose command line options change not only from system flavour - but
from revision to revision. Perl is the best example of this - when
they went to version five, they changed the language syntax in a way
which broke existing code. Perl itself is a testimony to the
OpenSource mindset - it's a gruesome mishmash of inconsistent syntax
and function calls - definitely a product designed by committee - but
one wherein each member clearly wasn't listening to anyone else.
Raymond touts the stability of Linux as proof of the OpenSource
concept, but that's a bit misleading. The core of Linux was written by
one person - Linus Torvalds. Moreover, there is a small group who
shepherds the contributions to the kernel to keep it stable and clean.
In other words, there's a priesthood at the top of the bazaar. If you
check into each successful OpenSource project, you see the same thing:
a small group of referees who filter the input and weed out the bad
ideas. The bazaar has cops. The chaos is contained.
When you get a company the size of Apple or Microsoft, you have
thousands of developers who do peer review of code. You have the
referees who determine what goes in to a product and what doesn't...
but they have one thing that the OpenSource method doesn't: they have
markets to answer to.
Who ordered that?
See, when commercial developers create a product, they start by trying
to solve a problem that customers need solved. The focus is always on
the customer. What do they need? What do they want (which isn't always
the same thing :)? Can they use this software? How much handholding
will they need to make this work? Can we make this experience so great
that the competition can't sway them back?
This last is another flaw with OpenSource - the lack of competition.
Let me start by saying that it's very weird to be saying this - I'm
not a big fan of the competitive model, but there are times when it
works. The advantage of competition is that it keeps you on your toes.
It forces you to pay attention to what the consumers want. Yet in
OpenSource, there isn't really any direct competition. Everything goes
into the pool, good and bad. If you have a good idea, everyone else
gets that good idea and it gets merged into all products - even the
bad ones. This means that the real differentiation for OpenSource
isn't marketshare or even marketability, but simply whether or not it
can garner a following.
That tends to happen whenever someone first solves a problem. People
jump on the bandwagon and promote the software, and the crowd grows
and grows - often way out of proportion to the quality of the
solution. Perl, again, is an excellent example of this. It's really a
terrible language - badly.. ok... not designed, clumsy and arbitrary.
But it works - is better than shell scripting, and more powerful than
awk... and it was the first serious attempt at such a language. So it
went platinum with a bullet.
The problem there is that the 'capitalist trench' problem is just as
real in OpenSource as it is in commerical product: once a group buys
into a specific solution, the cost of changing grows with time. That's
true even if the software is 'free' because the maintenance costs and
time to convert to another solution are not.
You want fries with that operating system?
The other core point Raymond tried to make is that software is a
service industry. To be honest, this is a disturbing concept in
several ways.
First, let me ask you a question: if you make your living by selling
service on software, what's the motivation to make the software as
easy to operate and maintain as possible? The answer? Well - not much.
And so we have Linux. Very powerful. Very flexible. Very hard for
average computer users to configure and maintain.
Now, that's not to say that commercial developers always have a
motivation to make their software easier... I would argue that any
software which needs a certification program is bad software. Any
software which needs an entire section at Chapters (errr, Computer
Literacy... Barnes and Nobel) devoted to rack after rack of MSCE
books, cheat cards and training CDs (and it's not just Microsoft -
Novell started this idea, but everyone is getting into it - Cisco just
joined the gang) is badly written from a user's perspective.
Actually, let me go back to Cisco for a moment. Cisco used to have a
great freeware configuration tool. You could download it from their
website. That tool has quietly vanished and has been replaced with
CiscoWorks and of course, Cisco certified training. A very ominous
trend.
There are also many kinds of software which have lifespans just too
short to make it sensible to bind the customer in a service agreement.
Games are a good example. Most games are onetime sells. You can do a
little addon with cheatbooks, or tie-in products, but for every Quake,
there's a thousand other games which get a moment of success, then
fade away.
While Raymond cites Doom as an example of a product which revived
itself by going OpenSource, he conveniently forgets that Doom was a
very successful commercial product for a long time - both as shareware
and commercialware. It was after it had saturated its market and had
been surpassed by newer games and technologies that the authors
decided it could be put into OpenSou rce, both to give new game
developers a hand learning some of the tricks and to let people who
just wanted to play around have a toy. It did generate an aftermarket,
but it's questionable as to how much revenue that aftermarket
generates.
He does cite the large number of addon and tie-in products Doom
generated, and yes, that's an argument for opening up a product to
some degree - I'm all for open formats and interchangable files, but
that's a long leap from fully open source on a commercial product.
Quality means many things
OpenSource fans tend to believe that they are quality fanatics, but
what definition of quality are we using? To them, the most important
kind of quality is stability - software shouldn't crash. The problem
is that OpenSource software does crash. Does it crash less often than
say, a Mac app? Well, probably, but most OpenSource projects tend to
be much simpler and smaller than Mac apps and in general, tend to be
very minimalistic. So they have the 'quality' of simplicity - for the
programmer, but the lack of quality for the end user.
The argument is that since everyone who uses the software has the
source, if you find a bug you can fix it then submit the bug fix to
someone and it becomes part of the product - if you can figure out who
to contact. But there again, we see a confusion as to whom the
customer is: most people who use computers do not know how to program
in BASIC, let alone C or C++, and more importantly - they do not want
to. They buy a computer to solve a problem - to get work done - not to
debug someone's code.
Ironically, when commercial developers release applications which are
clearly not 100%, we accuse them of forcing the customer to be beta
testers, but in a sense, OpenSource assumes you're not only going to
be a tester; you're going to be a programmer and fix the bug!
Raymond points out that Windows 2000, which reportedly shipped with
63,000 bugs, shows that OpenSource works because under Brook's "Law",
the number of bugs is roughly proportional to the square of the number
of programmers. Since Linux has 40,000 developers working on it -
there should be 2 billion bugs in Linux. The flaw is that he perceives
Linux as a collection of small projects, but sees Win2K as a single
monolithic application - much as he seems to see MacOS. In reality,
Win2K and MacOS aren't monolithic. They are composed of many smaller
parts which are handled by smaller teams. Much like Linux.
As for comparing bug counts - at least Microsoft has a bug count. If
Raymond had bothered to check the number, he'd have found that a
rather large proportion of the 63,000 bugs are cosmetic - and none
were considered 'showstoppers'. We don't even have a way to determine
the real bug count for Linux since there's no central repository for
this sort of information.
There is another system...
Apple has taken the fruit of the OpenSource movement - BSD Unix, and
added their own proprietary components which address the shortcomings
of BSD, from the perspective of the typical Mac user. They're bringing
UI consistency to the 'Wild West' and making a UI a required part of
the Unix experience. Old time Unix fans will find this unpleasent and
even undesirable, but this is the future.
Eric Raymond made one other comment: that the elitism of Mac
programmers is a danger to its long term survival... and I ask him -
where has be been? This same 'elitism' is what pulled us into a GUI
based world of computing. It's what made computing accessable to the
average person. This sounds like a weird echo of the 'Apple is doomed'
argument we used to hear so often - but in case he's missed it - Apple
is still here and doing better than ever.
Yes, OpenSource is important. Yes, it has much to contribute and
provides a way for non-commercial development to happen. Personally,
as I've said before, I think it's the most important new development
in computing... but it's not the future until it learns who the
customer is. Apple has made a couple of slips in that area with Aqua
and the new Quicktime, but at least they admit that they made an error
and have backed off. They embraced OpenSource and made it work for
them.
Not bad for a cathedral.
_________________________________________________________________
Jeff Lewis has been a programmer analyst for 24 years and started
programming commercially about the same time Unix and the original
microprocessor was released. He's worked on systems from DEC PDP-8/e's
to microprocessors to mainframes although these days he limits himself
to Macs and PCs for the most part. He wrote for a Canadian national
computer paper for five years and his goal is to foster mutual
understanding or at least tolerance between platform centric users and
to remind people that computers are just tools, not lifestyles and
definitely should not be religions.
# distributed via <nettime>: no commercial use without permission
# <nettime> is a moderated mailing list for net criticism,
# collaborative text filtering and cultural politics of the nets
# more info: majordomo@bbs.thing.net and "info nettime-l" in the msg body
# archive: http://www.nettime.org contact: nettime@bbs.thing.net